//权限拦截在路由跳转 导航守卫
import router from '@/router';
import store from '@/store'  //store实例  和组件中的this.$store 是一回事
const whitelist = ['/login', '/404'] //白名单

import nprogress from 'nprogress' //引入进度条
import 'nprogress/nprogress.css' //引入进度条样式
//不需要导出   只需要让代码执行即可
//前置守卫
//next是必须执行的钩子  如果不执行页面就死了
// next（）放过
// next(false)跳转停驶
// next(地址)  跳转到某个地址
router.beforeEach((to, from, next) => {
  nprogress.start()  //开启进度条的意思
  if (store.getters.token) {
    //如果有token
    if (to.path === '/login') {
      next('/')
    } else {
      //只有放过的时候才去获取用户资料
      //是每次都获取吗
      //如果当前vuex中有用户资料的id， 表示 已经有资料了 不需要获取了 如果没有 id才需要获取
      if (!store.getters.userId) {
        store.dispatch('user/getuserinfo')
      }
      next()
    }
  } else {
    if (whitelist.indexOf(to.path) > -1) {
      //表示要去的地址在白名单
      next()
    } else {
      next('/login')
    }

  }
  nprogress.done() // 手动关闭
})
//后置守卫
router.afterEach(() => {
  nprogress.done() //关闭进度条
})